function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { Input, InputNumber, Select } from "../../baseComponent";
import { jsx as _jsx } from "react/jsx-runtime";
export var strProp = function strProp(dv, writeable, cnLabel) {
  return {
    type: 'string',
    defaultValue: dv,
    editor: Input,
    writeable: writeable === undefined ? true : !!writeable,
    cnLabel: cnLabel //属性汉化名称
  };
};
export var numberProp = function numberProp(dv, writeable, cnLabel) {
  return {
    type: 'number',
    defaultValue: dv,
    editor: InputNumber,
    writeable: writeable === undefined ? true : !!writeable,
    cnLabel: cnLabel
  };
};
export var arrayProp = {
  type: 'array',
  defaultValue: [{
    value: 'test',
    label: 'sxxxx'
  }],
  editor: Input,
  writeable: true
};
export var anyProp = function anyProp(dv) {
  var w = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  var editor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Input;
  return {
    type: 'any',
    defaultValue: dv,
    editor: editor,
    writeable: w
  };
};
export var customProp = function customProp(dv, editor, writeable) {
  return {
    type: 'any',
    defaultValue: dv,
    editor: editor,
    writeable: writeable === undefined ? true : !!writeable
  };
};
var wrapSelector = function wrapSelector(data) {
  return function (props) {
    var onChange = props.onChange;
    function handleChange(evt) {
      onChange && onChange(evt.value, evt);
    }
    return /*#__PURE__*/_jsx(Select, _objectSpread(_objectSpread({}, props), {}, {
      value: {
        value: props.value
      },
      data: data || [],
      onChange: handleChange
    }));
  };
};
export var selectorProp = function selectorProp(dv, data, writeable, cnLabel) {
  return {
    type: 'any',
    defaultValue: dv,
    editor: wrapSelector(data),
    writeable: writeable === undefined ? true : !!writeable,
    cnLabel: cnLabel
  };
};
var boolData = [{
  value: true,
  label: 'true'
}, {
  value: false,
  label: 'false'
}];
var textAlignData = [{
  value: 'left',
  label: '左'
}, {
  value: 'center',
  label: '中'
}, {
  value: 'right',
  label: '右'
}];
var xtypeData = ['ngText', 'ngNumber', 'ngComboBox', 'Checkbox', 'SelectPicker', 'ngDate', 'ngDateTime'].map(function (key) {
  return {
    value: key,
    label: key
  };
});
export var selectorPropTypes = {
  booleanProp: selectorProp(false, boolData, true),
  textAlignProp: selectorProp('left', textAlignData, true),
  xtypeProp: selectorProp('ngText', xtypeData, true)
};
var tData = {
  booleanData: boolData,
  textAlignData: textAlignData,
  xtypeData: xtypeData
};
export function getSPT(dv, type, writeable, cnLabel) {
  return selectorProp(dv, tData[type] || boolData, writeable, cnLabel);
}